package cz.pecinovsky.česky.oopnz._115_;
//Příliš žluťoučký kůň úpěl ďábelské ódy

import cz.pecinovsky.česky.oopnz.správce.IKreslený;
import cz.pecinovsky.česky.oopnz.správce.Kreslítko;
import cz.pecinovsky.česky.oopnz.správce.Obdélník;
import cz.pecinovsky.česky.oopnz.správce.Trojúhelník;

import cz.pecinovsky.česky.oopnz.utility.Barva;
import cz.pecinovsky.česky.oopnz.utility.Směr8;

// %I+ <119
//import cz.pecinovsky.česky.oopnz.tvary_03_implementují_ITvar.Obdélník;
//import cz.pecinovsky.česky.oopnz.tvary_03_implementují_ITvar.Trojúhelník;
// %I-


//%%+  +++++ Konec ignorovaného počátečního textu +++++
//%X+ xxxxx Začátek přeskakovaného textu xxxxx
/*******************************************************************************
 *<pre>
 * Předchozí: Není - Toto_je_nově_definovaná_třída
 *
 * Projekt  017z_02_Tvary
 *   + Parametrické konstruktory
 *
 * Projekt  018z_02_Tvary
 *   + Atributy tělo, hlava, barva
 *   ~ Konstruktory ukládají odkazy do atributů
 *   + Metody setBarva(Barva), průsvitná() a vraťBarva()
 *
 * Projekt  019z_11_Správce
 *   ~ Třída převedena do projektu ovládaného správcem plátna
 *   + Implementace rozhraní IKreslený
 *     + Přidání metoda Nakresli(Kreslítko) vyžadované rozhraním
 *
 * Projekt  020z_11_Správce => Pokračuje v novém souboru
 *</pre>
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Šipka_116_119
{ static
//%X- ----- Konec přeskakovaného textu -----


//%I+ <119
//public class Šipka
//%I-
//%X+ <119
public class Šipka implements IKreslený
//%X-
{
//%X+ <118
    private Obdélník    tělo;
    private Trojúhelník hlava;
    private Barva       barva;


//%X-
    public Šipka()
    {
//%I+ <118
//        new Obdélník   (  0, 15, 25, 20, Barva.ČERNÁ);
//        new Trojúhelník( 25,  0, 25, 50, Barva.ČERNÁ, Směr8.VÝCHOD);
//%I-
//%X+ <118
        barva = Barva.ČERNÁ;
        tělo  = new Obdélník   ( 0, 15, 25, 20, barva);
        hlava = new Trojúhelník(25,  0, 25, 50, barva, Směr8.VÝCHOD);
//%X-
    }
//%X+ <117


    public Šipka(int x, int y)
    {
//%X-
//%I+ =117z
//        new Obdélník   (x,    y+15, 25, 20, Barva.ČERNÁ);
//        new Trojúhelník(x+25, y,    25, 50, Barva.ČERNÁ, Směr8.VÝCHOD);
//%I-
//%X+ <118
        barva = Barva.ČERNÁ;
        tělo  = new Obdélník   (x,    y+15, 25, 20, barva);
        hlava = new Trojúhelník(x+25, y,    25, 50, barva, Směr8.VÝCHOD);
//%X-
//%X+ <117
    }


//%X-
//%I+ =117z
//    public Šipka(int x, int y, Barva barva)
//    {
//        new Obdélník   (x,    y+15, 25, 20, barva);
//        new Trojúhelník(x+25, y,    25, 50, barva, Směr8.VÝCHOD);
//    }
//%I-
//%X+ <118
    public Šipka(int x, int y, Barva b)
    {
        barva = b;
        tělo  = new Obdélník   (x,    y+15, 25, 20, barva);
        hlava = new Trojúhelník(x+25, y,    25, 50, barva, Směr8.VÝCHOD);
    }


    public void setBarva(Barva nová)
    {
        tělo .setBarva(nová);
        hlava.setBarva(nová);
    }


    public void průsvitná()
    {
        tělo .setBarva(barva.průsvitná());
        hlava.setBarva(barva.průsvitná());
    }


    public void vraťBarva()
    {
        setBarva(barva);
    }
//%X-
//%X+ <119


    /***************************************************************************
     * Prostřednictvím dodaného kreslítka vykreslí obraz své instance.
     *
     * @param kreslítko Kreslítko, které nakreslí instanci
     */
    @Override
    public void nakresli(Kreslítko kreslítko)
    {
        tělo .nakresli(kreslítko);
        hlava.nakresli(kreslítko);
    }
//%X-
}

//%%-  ----- Začátek ignorovaného závěrečného textu -----
//== TESTY A METODA MAIN =======================================================
    private Šipka_116_119() {}


//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        new Šipka();
//        new Šipka(50, 50);
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
